﻿// owner 蒋家伟

#pragma once
#include "TaskBase_home.h"
#include "ITask.h"

namespace jsdk
{
    class ITaskExectutable;
    // 任务组
    // 如果期望一次触发多个相关联的任务，则创建一个任务组。
    class TASKBASE_EXPORT ITaskGroup : public ITask
    {
    public:
        /// \ brief 通过多个Task描述，创建一个任务组。其内部排列顺序决定任务的派发顺序【非执行完成顺序】
        /// \ in description 当前任务组的描述
        /// \ in upTaskDescriptions 一组任务描述
        static OwnerPtr<ITaskGroup> create(const std::wstring& description, std::vector<OwnerPtr<ITaskDescription>>&& opTaskDescriptions, uint32_t delayTime = 0);
        virtual ~ITaskGroup() {}
    };
}